/*
  Демонстрируются символы LCD, определенные пользователем
  
  CodeVisionAVR C Compiler
  (C) 2000-2002 HP InfoTech S.R.L.
  www.hpinfotech.ro

  Чип: AT90S8515
  Модель Памяти: SMALL
  Размер Стека Данных: 128 байт
  
  Используйте алфавитно-цифровой LCD 2x16,
  подключенный к разъему LCD STK200/300.
  Связи между LCD и платой должны быть
  по возможности короче.
*/

// подключим программы управления LCD для STK200/300
#include <lcdstk.h>

typedef unsigned char byte;

// таблица для символа, определенного пользователем
// стрелка, указывающая на правый верхний угол
flash byte char0[8]=
{
0b0000000,
0b0001111,
0b0000011,
0b0000101,
0b0001001,
0b0010000,
0b0100000,
0b1000000
};

// функция используемая для определения символов пользователя
void define_char(byte flash *pc,byte char_code)
{
  byte i,a;
  a=(char_code<<3)|0x40;
  for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}

void main(void)
{
  // инициализируем LCD для
  // 2 строк и 16 столбцов
  lcd_init(16);

  // определим символ 0 пользователя
  define_char(char0,0);

  // переключимся на запись в RAM Дисплея
  lcd_gotoxy(0,0);
  // отобразим символы, пользователем
  lcd_putsf("User defined\nchar 0:");
  // отобразим символ 0, определенный пользователем
  lcd_putchar(0);
  
  // здесь остановка
  while (1);
}
